# encoding: utf-8
module TipoTransacao
	
	#
	#
	class TipoTransacaoTO
		attr_accessor :id, :descricao, :fator
		
		def initialize(id, descricao, fator)
			@id = id
			@descricao = descricao
			@fator = fator
		end
	end
	
	DEBITO = TipoTransacaoTO.new(1, "Débito", -1)
	CREDITO = TipoTransacaoTO.new(2, "Crédito", 1)
	TRANSFERENCIA_DEB = TipoTransacaoTO.new(3, "Transferência(Dédito)", -1)
	TRANSFERENCIA_CRED = TipoTransacaoTO.new(4, "Transferência(Crédito)", 1)
	
	#
	#
	def self.tipos_transacao
		[DEBITO, CREDITO]
	end

	#
	#
	def self.tipos_transferencia
		[TRANSFERENCIA_DEB, TRANSFERENCIA_CRED]
	end
	
	#
	#
	def tipo_transacao_por_id(id)
		(TipoTransacao.tipos_transacao + TipoTransacao.tipos_transferencia).each  do |t|
			return t if t.id == id
		end
		
		return nil
	end

	#
	#
	def valor=(v)
		if (v.is_a? String)
			v.gsub!(",", "")
		end
		
		write_attribute(:valor, v)
	end

	#
	#
	def fator_transacao
		tipo_transacao_por_id(tipo).fator
	end  	
  	
  #
  #
  def tipo_transacao
  	tipo_transacao_por_id(tipo).descricao
  end

	#
	#
	def is_credito?
		fator_transacao == 1	
	end
	
	#
	#
	def is_debito?
		fator_transacao == -1
	end

end
